package busca;
import java.util.LinkedList;
import java.util.List;


public class BuscaProfundidade extends Busca{

	protected int profMax = 40;

	public BuscaProfundidade() {
	}

	public BuscaProfundidade(int m) {
		profMax = m;
	}

	public void setProfMax(int m) {
		profMax = m;
	}

	public No busca(Estado inicial) {
		startTime = System.currentTimeMillis();
		initFechados();
		//pilha de nos
		List<No> abertos = new LinkedList<No>();
		abertos.add(new No(inicial, null));

		while (abertos.size() > 0) {
			No n = abertos.remove(0);
			if (n.estado.isGoal()) {
				endTime = System.currentTimeMillis();
				return n;
			}
			if (n.getProfundidade() < profMax) {
				abertos.addAll( 0, sucessores(n) );
			} 
			if((System.currentTimeMillis() - startTime) > 5000){
				return null;
			}
		}
		return null;
	}        

}
